/**
 * Fichier avec les differentes fonctions permettant de gerer l'etat "voir"
 * Definition de l'environnement et des fonctions necessaires
 * @date 08.05.2011
 * @author Amirouche HALFAOUI
 */

#ifndef SEE_STATE_H
#define SEE_STATE_H

#include <GL/gl.h>
#include "skybox.h"
#include "house.h"

/**
 * Environnement de l'etat "voir"
 */
typedef struct {
  
	Skybox skybox;
	House house;
	
	float angle;
	
} See_State_Env;


/**
 * Permet de recuperer l'environnement de l'etat "voir"
 */
See_State_Env * ss_env();

/**
 * Initialisation de l'etat voir
 */
void see_state_init();

void see_state_init_gl(int width, int height);

/**
 * Fonction principale de l'etat menu
 * On y fait les calculs et les affichages 
 * @todo Faire 2 appels de fonctions separees a l'interieur, on differencie le computing du drawing
 */
void see_state_main();

void see_state_compute();

void see_state_draw();

/**
 * Les evenments de clavier et souris sera gere par cette fonction quand on est dans me menu
 *  @warning C'est pas definitif, mais on a pas mieux pour le moment, OpenGL force a utiliser des fonctions separees pour touches simples et speciales
 */
void see_state_event_keyboard(unsigned char key, int x, int y);

void see_state_event_special(int key, int x, int y);

/**
 * Gestion du redimensionnement des fenetres
 * 
 * @param width Nouvelle largeur de la fenetre
 * @param height Nouvelle hauteur de la fene
 */
void see_state_resize(int width, int height);


#endif